iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Software Development

軟體架構備忘錄系列 第 9

Day 9 系統架構 - 應用程式介面 (知識點042~046)

  • 分享至 

  • xImage
  •  

思考的問題

我的應用程式要以甚麼樣的形式供使用者使用呢?

由於每個應用程式最終大多需要供使用者使用,因此需要思考要用甚麼的形式提供應用程式介面給終端使用者。
常見的模式包含:桌面應用程式、網頁應用程式、PWA、手機應用程式、無程式碼App


桌面應用程式

概述

桌面應用程式是電腦端的原生應用程式,也是最傳統的應用程式形式。
與網頁應用程式相比,由於安全性因素,網頁應用程式可以使用的硬體功能較為受限、能存取的作業系統功能也較少。

優點

  • 可使用完整的硬體功能:可直接讀取光碟機、攝影機、印表機等硬體功能
  • 可使用的更多作業系統功能:例如硬碟、記憶體容量、登陸檔資訊。或是作業系統提供的特殊功能,例如語音辨識、自然語言發音等,
  • 效能更佳:因為直接在地端電腦進行計算,無須通過網路傳輸資料
  • 離線使用:由於應用程式已存在與電腦,只要使用的功能無須存取網路資訊,通常可離線使用。

缺點

  • 安裝與更新困難:通常需要下載較大的安裝檔並進行安裝的動作。更新時也更為困難。
  • 版本問題:不同電腦安裝的版本通常不一樣,無法如同網頁應用程式可確保各使用者皆是使用最新版本。
  • 有效能上的瓶頸:計算資源都使用地端電腦上的系統資源,雖然效能使用率較佳,但是如果要進行大規模運算時,使用雲端架構上的水平擴展模式才能夠達到更高的計算能力。

網頁應用程式

概述

網路應用程式是通過瀏覽器連接網站,直接使用應用程式。

優點

  • 不須安裝: 不同於傳統單機應用程式需要進行安裝,只要通過瀏覽器連接網站就可以取得應用程式。
  • 版本同步: 連線到網路應用程式時隨時都是使用最新版的應用程式,避免版本不一致所造成的使用問題。
  • 跨平台使用: 只要使用標準瀏覽器,就可以使用應用程式。免於不同種類、版本電腦的差異問題。
  • 客戶端負載低: 大部分的計算可於伺服器端進行。

缺點

  • 安全性: 通過公共網路連接應用程式,有更多的資安風險。例如XSS, SQL Injection, CSRF等攻擊。
  • 複雜性: 程式分割為處理顯示的瀏覽器前端與處理商業邏輯的伺服器後端,流程較為抽象與複雜。
  • 瀏覽器版本問題: 不同用戶端安裝的瀏覽器版本不一,需要考慮瀏覽器的相容性議題。
    無法離線使用: 當沒有網路時,就無法使用網路應用程式。現代的PWA應用程式將資料進行緩存以緩解此問題。
  • 網路速度問題: 某些客戶的網路速度較不穩定,可能會影響使用效能,需要考慮快取或縮減、延遲網路請求等技術。
  • 軟硬體訪問限制: 由於瀏覽器的支援性及安全性議題,沒有辦法如同原生應用程式一般,可以讀取全部硬體資訊及全部的使用者資訊與檔案

PWA

概述

PWA (Progressive web application) 是一種特殊形式的網路應用程式。藉由定義icon、主題顏色等類似傳統應用程式所需的資訊,以及service worker的機制以在網路中斷時提供部分功能及訊息推送機制。以讓PWA可以在跨平台的裝置上提供模擬原生應用程式的功能。

使用情境

  • 以模擬原生應用程式的形式,提供跨平台的應用程式。
  • 不一定隨時都需要連接到網路的網路應用程式
  • 提供更好的服務給網路環境受限的用戶

優點

除了如同網頁應用程式的優點,例如:跨平台、免安裝、免更新等優點之外。PWA又多了

  • 類應用程式: 可產生桌面捷徑與icon等類似傳統應用程式的功能
  • 離線使用: 在網路中斷時,仍可提供部分核心功能。
  • 載入速度快: 由於已經將程式資料快取於瀏覽器,因此啟動速度較快。

缺點

除了一般網路應用程式的缺點外,又多了以下缺點

  • 快取控制機制複雜: 由於需要快取離線資訊,聯網時又需要更新資料。不同的資料其更新策略又不一致,因此快取控制的機制較為複雜。
  • 不同瀏覽器的支援程度不一致,有些設備的瀏覽器對PWA的支援度並不完整。

手機應用程式

概述

手機應用程式是一種專門安裝在手機上的應用程式,通常通過手機上的應用程式商店進行安裝。不同作業系統的預設開發框架不同,須分別開發。或使用跨平台開發框架,例如React Native或Flutter進行開發。

優點

  • 方便與易用: 可直接通過應用程式商店安裝,無須額外下載或輸入網址。且介面通常經過優化,適合在手機上使用。
  • 支援性高: 通過使用者授權後,可完整支援手機的各種硬體功能與讀取各種系統資訊。
  • 離線使用: 除非需網路功能,不然大部分手機應用程式可以離線運行

缺點:

  • 開發成本高: 須分別替iOS或Android進行開發,且需要測試多版本的手機廠牌
  • 舊版本手機支援問題: 需考慮許多使用者仍然使用舊型號的手機,其軟硬體支援度較差。

無程式碼App

概述

無程式碼App是一種SaaS服務,藉由UI介面設計工具,不需要寫程式,直接拖曳相關介面並選擇按鈕按下後的處理動作,簡單的完成客製化程式的開發。其做法為通過抽象化邏輯設計流程,使用可視化工具設計使用者介面與動作邏輯,後續平台按照選定的規則執行程式邏輯。

使用情境

  • 如果只需要開發簡單的程式功能,例如表單填寫、資料呈現或單純的互動功能,不適合需要複雜的UI介面與流程的程式。

優點

  • 無須撰寫程式即可設計使用應用程式,讓非程式開發人員也可以簡單的設計自己想要的軟體介面與功能。

缺點

  • 能使用的功能受限於此Codeless App平台所設計的框架,無法設計較複雜的應用程式與流程。

上一篇
Day 8 系統架構 - 執行環境 (知識點034~041)
下一篇
Day 10 系統架構 - 架構模式 (知識點047~053)
系列文
軟體架構備忘錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言